perm filename TALK[4,KMC]5 blob
sn#139994 filedate 1975-01-15 generic text, type T, neo UTF8
% TO RECONSTRUCT THE TALK CORE IMAGE:
.R MLISPC TALK → TALK.LAP
*(MLISP TALK T)
*↑C
.R LISP 16 TALK.LAP → TALK.DMP
ALLOC? Y
FULL WDS=2000_ _ MEANS <SPACE>
BIN.PROG.SP=3200_
SPEC.PDL=_
REG. PDL=_
HASH=_
*(DSKIN (TALK.LAP) (S,DAV) (MAIL.FNS) SYS: UTILS)
*(MAIL_INIT)
*(INITFN (QUOTE RESTART))
*↑C
.SAVE TALK00
TO RUN THE PROGRAM, TYPE
.RUN TALK00[4,KMC]
%
BEGIN NEW EOF, FILE1, FILE2; SPECIAL EOF, FILE1, FILE2;
FEXPR OUT (L); % L = (DESTINATION FUNCTION OPEN CLOSE) %
IF L[1] EQ 'DOC THEN SEND_MAIL('DOCJOB, L[2])
ELSE IF L[1] EQ 'OWN THEN EVAL L[2]
ELSE BEGIN
IF LENGTH L ≥ 3 & L[3] THEN EVAL <'OUTPUT, 'DSK:, EVAL L[1]>;
OUTC(T, NIL);
EVAL L[2];
OUTC(NIL, IF LENGTH L = 4 THEN L[4] ELSE NIL);
END;
FEXPR INP (L); % L = (SOURCE FUNCTION) %
IF L[1] EQ 'DOC THEN SEND_MAIL('DOCJOB, <'SEND_MAIL, '(QUOTE TALK00), L[2]>)
ALSO WAIT_FOR_MAIL(NIL)
ELSE EVAL L[2];
EXPR READ_MESSAGE ();
BEGIN NEW CH, L;
PRINTSTR "READY:";
DO NIL UNTIL (CH ← READCH()) NEQ CR & CH NEQ LF & CH NEQ ALTMODE;
TERPRI TERPRI DO L ← CH CONS L UNTIL (CH ← READCH()) EQ ALTMODE & (CH ← READCH()) EQ ALTMODE;
RETURN READLIST('?" CONS REVERSE('?" CONS L));
END;
EXPR PRINT_MESSAGE (MESSAGE);
TERPRI TERPRI FOR NEW CH IN MESSAGE DO PRINC CH;
EXPR PRINT_ALL (FILE); % COPIES FILE "FILE" TO CURRENT OUTPUT FILE %
BEGIN NEW CH;
EVAL <'INC, <'INPUT, FILE, 'DSK:, FILE>, NIL>;
DO NIL UNTIL TYO(TYI()) EQ OCTAL 45 & (ATOM(CH ← ERRSET(READCH(),T)) | PRINC(CAR CH) & NIL);
INC(NIL,T)
END;
EXPR SLASHIFY (L);
FOR NEW I IN L COLLECT <'?/, I>;
%##########################################################################################%
%######################## EXECUTION BEGINS HERE #########################%
%##########################################################################################%
EOF ← PERCENT; % THE END-OF-FILE CHARACTER %
PRINTSTR TERPRI "WHAT DISK FILE DO YOU WANT THIS INTERVIEW SAVED ON? (5 LETTERS ONLY)";
FILE1 ← TERPRI READ();
FILE2 ← AT(SUBSTR(FILE1,1,5) CAT "A"); % OUTPUT ALTERNATES BETWEEN THESE TWO %
OUT(FILE1, NIL, T); % INITIALIZATION %
WHILE T DO
BEGIN NEW MESSAGE, VALUES; SPECIAL MESSAGE, VALUES;
IF ¬JOB_EXISTS('DOCJOB) THEN
BEGIN
PRINTSTR "THE DOCTOR HAS NOT STARTED RUNNING 'DOCJOB' YET.";
DO SLEEP(30) UNTIL JOB_EXISTS('DOCJOB) | PROG2(PRINTSTR "STILL HASN'T STARTED 'DOCJOB'", NIL);
TERPRI PRINTSTR "OK, HE JUST STARTED IT.";
SLEEP(30); % MAKE SURE HE HAS TIME TO START IT UP %
END;
MESSAGE ← INP(DOC, READ_MESSAGE());
OUT(OWN, TERPRI PRINTSTR MESSAGE);
OUT(FILE1, TERPRI PRINTSTR TERPRI TERPRI MESSAGE);
MESSAGE ← INP(OWN, READ_MESSAGE());
EVAL<'OUT, 'DOC, <'PRINTSTR, <'QUOTE,READLIST SLASHIFY(EXPLODE AT MESSAGE)>>>;
OUT(FILE1, PRINTSTR MESSAGE);
OUT(FILE1, PRINC EOF, NIL, T);
'(FILE1 FILE2) ←⊗ <FILE2, FILE1>; % ROTATE THE OUTPUT FILES %
OUT(FILE1, PRINT_ALL(FILE2), T);
END;
END.